package com.gin.kotlin.no_gay_alliance.database.entity

import androidx.room.ColumnInfo
import androidx.room.Entity
import androidx.room.PrimaryKey
import java.time.ZonedDateTime

/**
 * 回复历史任务
 * @property id Int
 * @property topicId 主题id
 * @property title 主题标题
 * @property type 任务类型
 * @property totalPage 主题总页数(请求完成更新)
 * @property currentPage (扫描类型)当前页数
 * @property start (扫描类型)起始页数
 * @property end (扫描类型)结束页数
 * @property updatedTime 状态更新时间
 * @constructor
 */
@Entity
data class ReplyHistoryTask(
    @PrimaryKey(true)
    var id: Int=0,
    var topicId: Long,
    var title: String,
    var remark: String,
    var type: Type,
    var status: Status,
    var totalPage: Int = 0,
    var currentPage: Int = 0,
    var start: Int = 0,
    var end: Int = 0,
    @ColumnInfo(defaultValue = "0")
    var updatedTime: ZonedDateTime = ZonedDateTime.now(),
) {
    /**
     * 任务类型
     */
    enum class Type {
        /**
         * 扫描：指定起止页数，执行完毕后停止
         */
        SCANNER,

        /**
         * 监控：持续监控指定主题最后两页的回复
         */
        MONITOR,
    }

    /**
     * 任务状态
     */
    enum class Status {
        /**
         * 暂停
         */
        PAUSED,

        /**
         * 进行中
         */
        IN_PROCESS,

        /**
         * 排队中
         */
        WAITING,

        /**
         * 已完成
         */
        COMPLETED,

        /**
         * 请求错误
         */
        ERROR,
    }
}
